home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Taifun
/
Taifun 048 (1988-02-15)(Ossowski, Stefan)(DE)(PD).zip
/
Taifun 048 (1988-02-15)(Ossowski, Stefan)(DE)(PD).adf
/
Mandel
/
source
/
BorderLess.c
next >
Wrap
C/C++ Source or Header
|
1988-01-23
|
8KB
|
266 lines
#define NULL 0L
#include <intuition/intuition.h>
struct NewScreen ns = {
0,0,320,200,6,
1,2,EXTRA_HALFBRITE,
CUSTOMSCREEN,
NULL,
(UBYTE *)"Test screen",
NULL, NULL
};
struct NewWindow nw = {
20,20,280,160,1,2,
CLOSEWINDOW | RAWKEY,
WINDOWCLOSE | WINDOWSIZING | WINDOWDEPTH | WINDOWDRAG | GIMMEZEROZERO |
SMART_REFRESH | ACTIVATE | NOCAREREFRESH,
NULL, NULL,
(UBYTE *)"Test Window: borderless or not",
NULL,
NULL,
20,20, -1, -1,
CUSTOMSCREEN
};
struct Library *GfxBase, *IntuitionBase, *LayersBase, *OpenLibrary();
struct Screen *screen, *OpenScreen();
struct Window *window, *OpenWindow();
struct RastPort *rp;
struct IntuiMessage *im, *WaitPort(), *GetMsg();
struct Gadget *gadget;
long int movex, movey, sizex, sizey;
struct BorderInfo
{
BYTE SizeX, SizeY;
BYTE MoveX, MoveY;
} borderinfo;
void DoBorderless(window, borderinfo)
struct Window *window;
struct BorderInfo *borderinfo;
{
/* Make window borderless */
register struct Layer_Info *LayerInfo = &window->WScreen->LayerInfo;
register struct Layer *Layer = window->RPort->Layer;
register long movex;
register long movey;
register long sizex;
register long sizey;
if (window->Flags & BORDERLESS) return;
LockLayer(LayerInfo, Layer);
window->Flags |= BORDERLESS;
movex = -window->BorderLeft;
movey = -window->BorderTop;
sizex = window->BorderRight - movex;
sizey = window->BorderBottom - movey;
window->BorderLeft =
window->BorderTop =
window->BorderRight =
window->BorderBottom = 0;
window->GZZWidth += sizex;
window->GZZHeight += sizey;
MoveLayer(LayerInfo, Layer, movex, movey);
SizeLayer(LayerInfo, Layer, sizex, sizey);
UnlockLayer(window->RPort->Layer);
borderinfo->MoveX = movex;
borderinfo->MoveY = movey;
borderinfo->SizeX = sizex;
borderinfo->SizeY = sizey;
/* Done making borderless */
}
void UndoBorderless(window, borderinfo)
struct Window *window;
struct BorderInfo *borderinfo;
{
/* ``Another fine mess you got me into!'' */
register struct Layer_Info *LayerInfo = &window->WScreen->LayerInfo;
register struct Layer *Layer = window->RPort->Layer;
register long movex = borderinfo->MoveX;
register long movey = borderinfo->MoveY;
register long sizex = borderinfo->SizeX;
register long sizey = borderinfo->SizeY;
if (window->Flags & BORDERLESS == 0) return;
LockLayer(LayerInfo, Layer);
SizeLayer(LayerInfo, Layer, -sizex, -sizey);
MoveLayer(LayerInfo, Layer, -movex, -movey);
window->GZZWidth -= sizex;
window->GZZHeight -= sizey;
window->BorderLeft = -movex;
window->BorderTop = -movey;
window->BorderRight = sizex + movex;
window->BorderBottom = sizey + movey;
window->Flags &= ~BORDERLESS;
RefreshWindowFrame(window);
UnlockLayer(Layer);
/* Done Undoing Borderless */
}
main()
{
long i;
char text[50];
GfxBase = OpenLibrary("graphics.library", LIBRARY_VERSION);
LayersBase = OpenLibrary("layers.library", LIBRARY_VERSION);
IntuitionBase = OpenLibrary("intuition.library", LIBRARY_VERSION);
screen = OpenScreen(&ns);
nw.Screen = screen;
window = OpenWindow(&nw);
DoBorderless(window, &borderinfo);
rp = window->RPort;
SetDrMd(rp, (long)JAM1);
for (i=0; i < 64; i++) {
sprintf(text, "This Is Color %2ld", i);
Move(rp, i < 32? 10L: 150L, 10L + 4*(i & 31));
SetAPen(rp, i);
Text(rp, &text[0], (long) strlen(text));
}
printf("FirstGadget points at %lx\n", window->FirstGadget);
for(gadget = window->FirstGadget; gadget; gadget=gadget->NextGadget) {
PrintGadget(gadget);
getchar();
}
UndoBorderless(window, &borderinfo);
getchar();
CloseWindow(window);
CloseScreen(screen);
CloseLibrary(IntuitionBase);
CloseLibrary(LayersBase);
CloseLibrary(GfxBase);
}
PrintGadget(gadget)
struct Gadget *gadget;
{
short Bits;
printf("----------------------------------------------------------\n");
printf("Struct Gadget:\n");
printf("NextGadget.....%08lx\n",gadget->NextGadget);
printf("LeftEdge.......%d(dec)\n", gadget->LeftEdge);
printf("TopEdge........%d(dec)\n", gadget->TopEdge);
printf("Width..........%d(dec)\n", gadget->Width);
printf("Height.........%d(dec)\n", gadget->Height);
printf("Flags..........%04x\n", gadget->Flags);
Bits = gadget->Flags;
switch (Bits & GADGHIGHBITS) {
case GADGHCOMP: printf(" GADGHCOMP\n"); break;
case GADGHBOX: printf(" GADGHBOX\n"); break;
case GADGHIMAGE: printf(" GADGHIMAGE\n"); break;
case GADGHNONE: printf(" GADGHNONE\n"); break;
}
if (Bits & GADGIMAGE)
printf(" GADGIMAGE\n");
if (Bits & GRELBOTTOM)
printf(" GRELBOTTOM\n");
if (Bits & GRELRIGHT)
printf(" GRELRIGHT\n");
if (Bits & GRELWIDTH)
printf(" GRELWIDTH\n");
if (Bits & GRELHEIGHT)
printf(" GRELHEIGHT\n");
if (Bits & SELECTED)
printf(" SELECTED\n");
if (Bits & GADGDISABLED)
printf(" GADGDISABLED\n");
printf("Activation.....%04x\n", gadget->Activation);
Bits = gadget->Activation;
if (Bits & RELVERIFY)
printf(" RELVERIFY\n");
if (Bits & GADGIMMEDIATE)
printf(" GADGIMMEDIATE\n");
if (Bits & ENDGADGET)
printf(" ENDGADGET\n");
if (Bits & FOLLOWMOUSE)
printf(" FOLLOWMOUSE\n");
if (Bits & RIGHTBORDER)
printf(" RIGHTBORDER\n");
if (Bits & LEFTBORDER)
printf(" LEFTBORDER\n");
if (Bits & TOPBORDER)
printf(" TOPBORDER\n");
if (Bits & BOTTOMBORDER)
printf(" BOTTOMBORDER\n");
if (Bits & TOGGLESELECT)
printf(" TOGGLESELECT\n");
if (Bits & STRINGCENTER)
printf(" STRINGCENTER\n");
if (Bits & STRINGRIGHT)
printf(" STRINGRIGHT\n");
if (Bits & LONGINT)
printf(" LONGINT\n");
if (Bits & ALTKEYMAP)
printf(" ALTKEYMAP\n");
printf("GadgetType.....%04x\n", gadget->GadgetType);
Bits = gadget->GadgetType;
if (Bits & SYSGADGET)
printf(" SYSGADGET\n");
if (Bits & SCRGADGET)
printf(" SCRGADGET\n");
if (Bits & GZZGADGET)
printf(" GZZGADGET\n");
if (Bits & REQGADGET)
printf(" REQGADGET\n");
switch (Bits & 0x00F0) {
case SIZING: printf(" SIZING\n"); break;
case WDRAGGING: printf(" WDRAGGING\n"); break;
case SDRAGGING: printf(" SDRAGGING\n"); break;
case WUPFRONT: printf(" WUPFRONT\n"); break;
case SUPFRONT: printf(" SUPFRONT\n"); break;
case WDOWNBACK: printf(" WDOWNBACK\n"); break;
case SDOWNBACK: printf(" SDOWNBACK\n"); break;
case CLOSE: printf(" CLOSE\n"); break;
default: printf(" Unknown System Gadget\n");
}
switch (Bits & 0x000F) {
case BOOLGADGET: printf(" BOOLGADGET\n"); break;
case GADGET0002: printf(" GADGET0002\n"); break;
case PROPGADGET: printf(" PROPGADGET\n"); break;
case STRGADGET: printf(" STRGADGET\n"); break;
default: printf(" Unknown Appli Gadget\n");
}
printf("GadgetRender...%08lx\n",gadget->GadgetRender);
printf("SelectRender...%08lx\n",gadget->SelectRender);
printf("GadgetText.....%08lx\n",gadget->GadgetText);
printf("MutualExclude..%08lx\n",gadget->MutualExclude);
printf("SpecialInfo....%08lx\n",gadget->SpecialInfo);
printf("GadgetID.......%04x\n", gadget->GadgetID);
printf("UserData.......%08lx\n",gadget->UserData);
}